Now is time to analyse the Web service's requirements in order to satisfy them.

We need to notice that this part of the system needs to store a large amount of information. There are two kind of information kept in the 
Web service, user information and session information.

For user information, the application memory is considered enough to hold this data. Furthermore, the sessions can be easily restored if the 
client logs in again so it is not necessary to store this information permanently.
For session information, we use a database able to store information like strings, integers, dates, float and byte arrays. This byte array is 
needed so as to store photos that users attach to the notes. Based in the Web service's requirements we found the following use cases:
  \begin{figure}[ht]
    \centering
    \includegraphics[keepaspectratio, width=1.0\textwidth]{WebService/images/uc_diagram.png} 
    \caption{Use case diagram}
    \label{uc_diagram}
  \end{figure}
  
Both users and administrators can check if a nick has been used and register new accounts in the system. Users can be created by everybody 
and an administrator from another administrator. Both users and administrators can login, request their information and change them.
They can also search for other users using fields like nick, name, surname and/or country. The administrator is able to see other 
administrators but users cannot. They are allowed to see other users information, positions or even delete them. Users can make friend 
requests or see their requests and accept or reject them. Furthermore he can see his friends positions. These positions are sent by users 
in certain conditions.

Users can also send new notes, that can contain photos inside. This way other users can ask for a friend's notes. At this point is mentioned that 
a user can have a lot of positions or notes. This means that something must be done about the client requests in order to reduce network traffic. 
This problem affects also the administrator request like the method to get system's users.  During the design methods to get a specific 
amount or range of data parameters are defined. Anyone can call to a web service method at any time. It may be not so important in methods like 
the one that returns whether a nick exists or not, because everyone has rights to call it. But in method that for example returns friends, 
the server needs to know who is asking for it, and somehow ensure authentication.